// #pragma once

// #include <iostream>
// #include <string>
// #include <vector>
// #include <cstdlib>
// using namespace std;

// class Util
// {

// public:
//     // 输入：const &
//     // 输出：*
//     // 输入输出：&
//     static bool StringSplit(const string &str, const string &sep, vector<std::string> *result)
//     {
//         size_t start = 0;
//         // 10 + 20
//         //"abcd efg",4-0=4 [ ),两个元素下标一减，刚好是两个元素所跨越的元素
//         //pos = 4，指向空格，4-0=4，所以有abcd 4个元素
//         while (start < str.size())
//         {
//             auto pos = str.find(sep, start);//find第一个参数是要找的子串，第二个参数是查找的起始位置
//             if (pos == string::npos)
//                 break;
//             //substr：第一个参数表示要截取的位置，第二个参数表示步长，从特定位置开始要截取多少个字符，[)前闭后开区间
//             //不要步长就直接截取到结尾
//             result->push_back(str.substr(start, pos - start)); // 找到的一定是前闭右开区间

//             // 位置的重新reload
//             //  + 20
//             start += pos + sep.size();
           
//         }
//         if(start<str.size())
//         {
//             result->push_back(str.substr(start));
//         }
//         return true;
//     }
//     static int toInt(const std::string &s)
//     {
//         return atoi(s.c_str());
//     }
// };

#pragma once

#include <iostream>
#include <string>
#include <vector>
#include <cstdlib>

using namespace std;

class Util
{
public:
    // 输入: const &
    // 输出: *
    // 输入输出: &
    static bool StringSplit(const string &str, const string &sep, vector<std::string> *result)
    {
        size_t start = 0;
        // + 20
        // "abcd efg" -> for(int i = 0; i < 10; i++) !=  for(int i = 0; i <= 9; i++)
        while (start < str.size())
        {
            auto pos = str.find(sep, start);
            if (pos == string::npos) break;
            result->push_back(str.substr(start, pos-start));
            // 位置的重新reload
            start = pos + sep.size();
        }
        if(start < str.size())  result->push_back(str.substr(start));
        return true;
    }

    static int toInt(const std::string &s)
    {
        // std::stoi();
        return atoi(s.c_str());
    }
};